#pragma once


//
// IResultWriter
//              

class CCmdlineArgs;
struct RESULTSFILEINFO;

                    
class IResultWriter
{   
public:
    virtual ~IResultWriter();
    virtual void WriteInfo(const RESULTSFILEINFO *info) = 0;                // os = ... hw = ...

    virtual void BeginModule(const char *modulename) = 0;                   // <module> modulename = "..."
    virtual void WriteNode(const char *name, float value) = 0;              // "a = 0.12"
    virtual void EndModule() = 0;                                           // </module>
};


//
// IBenchmark
//

class IBenchmark
{
public:
    virtual ~IBenchmark();
    virtual void Run(IResultWriter *results, const CCmdlineArgs *args) = 0;
    virtual const char *GetName() const = 0;
};

